<script>
  import config from './config'
  import { getToken } from '@/utils/auth'
  import storage from '@/utils/storage'
  import constant from '@/utils/constant'

  export default {
    onLaunch: function(options) {
      this.initApp()
      // 处理扫码启动
      this.handleScanLaunch(options)
      // 隐藏原生tabBar，使用自定义tabBar
      uni.hideTabBar({
        animation: false
      })
    },
    onShow: function(options) {
      // 处理从扫码进入的场景
      this.handleScanShow(options)
    },
    methods: {
      // 初始化应用
      initApp() {
        // 初始化应用配置
        this.initConfig()
        // 检查用户登录状态
        //#ifdef H5
        this.checkLogin()
        //#endif
      },
      // 处理扫码启动
      handleScanLaunch(options) {
        console.log('App onLaunch options:', options)
        // 检查是否从扫码进入
        if (options && options.query && options.query.q) {
          // 解码扫码参数
          const qrContent = decodeURIComponent(options.query.q)
          console.log('扫码内容:', qrContent)
          this.handleQrCode(qrContent)
        } else if (options && options.path) {
          // 检查是否直接指定了页面路径
          if (options.path.includes('pages/check/verify')) {
            // 已经在验证页面，不需要额外处理
            console.log('直接进入验证页面')
          }
        }
      },
      // 处理显示时的扫码
      handleScanShow(options) {
        if (options && options.scene === 1047) {
          // 场景值1047表示扫描小程序码进入
          console.log('从扫描小程序码进入')
        } else if (options && options.scene === 1011 || options.scene === 1012 || options.scene === 1013) {
          // 扫描二维码进入
          console.log('从扫描二维码进入')
          if (options.query && options.query.q) {
            const qrContent = decodeURIComponent(options.query.q)
            this.handleQrCode(qrContent)
          }
        }
      },
      // 处理二维码内容
      handleQrCode(content) {
        try {
          // 检查是否包含验证页面路径
          if (content.includes('/pages/check/verify') || content.includes('applyNo=')) {
            // 解析参数
            let params = {}
            
            // 如果是完整路径
            if (content.includes('?')) {
              const queryString = content.split('?')[1]
              queryString.split('&').forEach(param => {
                const [key, value] = param.split('=')
                if (key && value) {
                  params[key] = decodeURIComponent(value)
                }
              })
            }
            
            // 如果有必要参数，跳转到验证页面
            if (params.applyNo && params.code) {
              setTimeout(() => {
                uni.navigateTo({
                  url: `/pages/check/verify?applyNo=${params.applyNo}&applyId=${params.applyId || ''}&code=${params.code}`,
                  fail: (err) => {
                    console.error('跳转失败:', err)
                    // 如果跳转失败，可能是因为还在加载中，使用reLaunch
                    uni.reLaunch({
                      url: `/pages/check/verify?applyNo=${params.applyNo}&applyId=${params.applyId || ''}&code=${params.code}`
                    })
                  }
                })
              }, 100) // 延迟一下确保页面加载完成
            }
          }
        } catch (error) {
          console.error('处理二维码失败:', error)
        }
      },
      initConfig() {
        this.globalData.config = config
      },
      checkLogin() {
        const url = window.location.href;
        const path = url.split('?')[0]
        const isMerchantDetails = path.indexOf('/pages/user/merchant-details') !== -1
        if(isMerchantDetails){
          return
        }
        if (!getToken()) {
          this.$tab.reLaunch('/pages/login') 
        }
      }
    }
  }
</script>

<style lang="scss">
  @import '@/static/scss/index.scss'
</style>
